package bal;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.NoResultException;
import javax.persistence.NonUniqueResultException;
import javax.persistence.Persistence;
import javax.persistence.Query;

import dal.Utilisateur;

/**
 * Session Bean implementation class utilisateur
 */
@Stateless(name = "utilisateur2")
public class utilisateur implements utilisateurRemote, utilisateurLocal {

    /**
     * Default constructor. 
     */
    public utilisateur() {
        // TODO Auto-generated constructor stub
    }
    public void add_user()
    {
    	
    	EntityManagerFactory emf = 
    		
    	    Persistence.createEntityManagerFactory("Bal");
    	    EntityManager em = emf.createEntityManager();
    	    EntityTransaction tx = em.getTransaction();
    	    tx.begin();
    	    dal.Utilisateur v = new dal.Utilisateur();
    	    v.setNom("Adel");
    	    v.setPrenom("Haddadi");
    	    //dal.Ville c = em.find(dal.Ville.class, 1);
    	    //v.setVille(c);
    	    em.persist(v);
    	    tx.commit();
    	    em.close(); 
    	   
    }
    
    public void add_user(String name)
    {
    	
    	EntityManagerFactory emf = 
    		
    	    Persistence.createEntityManagerFactory("Bal");
    	    EntityManager em = emf.createEntityManager();
    	    EntityTransaction tx = em.getTransaction();
    	    tx.begin();
    	    dal.Utilisateur v = new dal.Utilisateur();
    	    v.setNom(name);
    	    v.setPrenom(name);
    	    dal.Ville c = em.find(dal.Ville.class, 1);
    	    v.setVille(c);
    	    em.persist(v);
    	    tx.commit();
    	    em.close(); 
    	   
    }

    public int login_user(String User,String Password) throws Exception
    {
            EntityManagerFactory emf = 
    		
    	    Persistence.createEntityManagerFactory("Bal");
    	    EntityManager em = emf.createEntityManager();
    	    //dal.Utilisateur v = new dal.Utilisateur();
    	    dal.Utilisateur  c;
    	    try
    	    {
    	    	Query query = em.createQuery("SELECT c FROM Utilisateur c where c.nom=:prm_nom and c.prenom=:prm_prenom").setParameter("prm_nom", User).setParameter("prm_prenom",Password); 
    	        c = (Utilisateur)query.getSingleResult();
    	    }
    	    catch (NoResultException ex )
    	    {
    	    	em.close(); 
            	return -1;
    	    }
    	    catch (NonUniqueResultException  ex1 )
    	    {
    	    	throw new Exception("Une erreur dans la base, le couple User password doit etre unique");
    	    }
    	    
    	    em.close(); 
            return 0;
             	    
    	
    	
    
    }
 }
